// 首先引入config，再引入模块header。由于，header依赖于jquery，index依赖与header，所以，index也中可以使用jQuery。
require(['./config'],()=>{
    require(['template','request','cookie','bootstrap','header','footer'],(template,request,cookie)=>{
        class Cart{
            constructor(){
                this.getCartData().then(()=>{
                    this.event()
                    this.autoCount()
                    this.tableOperation()
                })
                this.focus()
                this.loginMessage()
            } 
            //商品动态栏
            event(){               
                if($('.foot').offset().top>650){
                    $('.foot').css({'position':'fixed','bottom':'0',"width":"100%"})
                }else{
                    $('.foot').css('position','relative')
                }
            }
            //获取数据
            getCartData(){
                return new Promise(resolve=>{
                    let cart = JSON.parse(localStorage.getItem('cart'))
                    $('tbody').html(template('detailTemplate',{cart}))
                    resolve()
                })                
            } 
            //表格操作
            tableOperation(){
                var _this = this
                //全局影响全部
                $("#allCheck").change(()=> {
                    //先判断这个全选的是不是选中了
                   if ($("#allCheck").prop("checked") == true) {
                       //选中了就下面所有的checked选中
                       $(".check,#allCheck1").prop("checked", true);
                   } else {
                       $(".check,#allCheck1").prop("checked", false);                       
                   }
                   autoCount()
                })
                //购买框的checkbox
                $("#allCheck1").change(()=> {
                    //先判断这个全选的是不是选中了
                   if ($("#allCheck1").prop("checked") == true) {
                       //选中了就下面所有的checked选中
                       $(".check,#allCheck").prop("checked", true);
                   } else {
                       $(".check,#allCheck").prop("checked", false);
                   }
                   autoCount()
                })
                //单选影响全局
                $(".check").change(()=> {
                    var lis = $(".check");
                    var liss = true;
                    //for循环判断每个商品的选择框是不是选中了
                    for (var i = 0; i < $(".check").length; i++) {
                        if (liss = liss && $(lis[i]).prop("checked") == true) {
                            $("#allCheck,#allCheck1").prop("checked", true);
                        } else {
                            $("#allCheck,#allCheck1").prop("checked", false);
                        }
                    }
                    autoCount()
                })
                //增加数据
                $('.addBtn').on('click',function(){    
                    $(this).prev().val(Number( $(this).prev().val()) + 1) 
                    $(this).parents('tr').find('.goodPrice').html(($(this).prev().val()*$(this).parents('tr').find('td .price').html()).toFixed(2))
                    let id = Number($(this).parents('tr').attr('data-id'))
                    let count = Number($(this).prev().val())
                    autoCount()
                    storageChange(id,count) 
                })
                //减少数量
                $('.subBtn').on('click',function(){
                    if(Number( $(this).next().val()) >= 1){
                        $(this).next().val(Number( $(this).next().val()) - 1)
                        if($(this).next().val() == 0){
                            $(this).next().val(1) 
                            alert('最少一件')
                        }
                    }                   
                    $(this).parents('tr').find('.goodPrice').html(($(this).next().val()*$(this).parents('tr').find('td .price').html()).toFixed(2))  
                    let id = Number($(this).parents('tr').attr('data-id'))
                    let count = Number($(this).next().val())
                    autoCount() 
                    storageChange(id,count)                 
                })
                //删除
                $('.edit').on('click',function(){
                    if(confirm('是否要删除数据？')){
                        $(this).parents('tr').remove()
                        let id = Number($(this).parents('tr').attr('data-id'))
                        autoCount()                        
                        storageChange(id)      
                        $('.foot').css('position','relative')              
                        _this.event()
                    }                    
                })
                //计算总价和总数
                function autoCount(){
                    console.log(1)
                    var count = 0,num = 0
                    for(var i = 0;i < $('.check').length; i++){
                        count += $('.check').eq(i).prop('checked') ? Number($('.goodPrice').eq(i).html()) : 0
                        num += $('.check').eq(i).prop('checked') ? Number($('.numGood').eq(i).val()) : 0
                    }                
                    $('#money').html(count.toFixed(2))
                    $('.goodNum').html(num)
                } 
                //存储数据
                function storageChange(id,count){
                    let cart = JSON.parse(localStorage.getItem('cart'))
                    if(count){
                        cart = cart.map(shop =>{
                            if(id === shop.id){
                                shop.count = count
                            }
                            return shop
                        })
                    }else{
                        cart = cart.filter(shop=>{
                            return id != shop.id
                        }) 
                    }  
                    if(cart != ''){
                        localStorage.setItem('cart',JSON.stringify(cart))
                    } else{
                        localStorage.removeItem('cart')
                        location.reload()
                    } 
                }
            }
            //数据自动计算
            autoCount(){
                var count = 0,num = 0
                for(var i = 0;i < $('.check').length; i++){
                    count += $('.check').eq(i).prop('checked') ? Number($('.goodPrice').eq(i).html()) : 0
                    num += $('.check').eq(i).prop('checked') ? Number($('.numGood').eq(i).val()) : 0
                }                
                $('#money').html(count.toFixed(2))
                $('.goodNum').html(num)
            } 
            //网页被focus时，重新加载，更新页面上的购物车数据
            focus(){
                window.onfocus = function() {
                    location.reload()         
                }
            }
            // 登录提示框 
            loginMessage(){
                if($.cookie('username')) $('.isLogin').css('display','none')
            }                     
        }
        new Cart()
    })
})
